home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 031-040 / amok37 / skrÄbel / sc_computer-mod-asm.zoo / Skräbel-src / sc_Computer-Mod.ASM / AngrenzungenOk.ASM < prev    next >
Assembly Source File  |  1990-03-19  |  6KB  |  218 lines

  1. ;(*****************************************************************************
  2. ;
  3. ;  :Program.       AngrenzungenOk.ASM
  4. ;  :Author.        Georg Brünsing
  5. ;  :Address.       Grechte 2, D-4156 Willich 3
  6. ;  :Phone.         02156/7534
  7. ;  :ShortCut.      gb
  8. ;  :Support.       -
  9. ;  :Version.       1.0
  10. ;  :Date.          20-Feb-89
  11. ;  :Copyright.     PD
  12. ;  :Language.      Assembler
  13. ;  :Translator.    Profimat / DATA BECKER
  14. ;  :Imports.       -
  15. ;  :Update.        -
  16. ;  :History.       -
  17. ;  :ModHistory.    -
  18. ;  :Contents.      Assembler Source für Skräbel
  19. ;  :Remark.        -
  20. ;  :Usage.         -
  21. ;
  22. ;*****************************************************************************)
  23.  
  24.  
  25.  
  26.    INCLUDE "Rec.ASM"
  27.  
  28. ;Anfang:
  29. ;   MOVEA.L  #3020168 , A2
  30. ;   BSR      AngrenzungenOk
  31. ;   BRA      Anfang
  32.  
  33. AngrenzungenOk:
  34. ; Eingang in A2 = ComputerMsgPtr
  35. ; Ausgang in D0 = TRUE wenn Ok
  36. \Sprung     EQUR A6
  37. \GWort      EQUR A3
  38. \ComMsgPtr  EQUR A2
  39. \ZugRing    EQUR A1
  40. \Spielfeld  EQUR A0
  41. \left       EQUR D7
  42. \top        EQUR D6
  43. \right      EQUR D5
  44. \down       EQUR D4
  45. \i          EQUR D3
  46. \Off        EQUR D2
  47. \Off2       EQUR D1
  48. \Bool       EQUR D0
  49.    LEA      ZugRing(\ComMsgPtr) , \ZugRing
  50.    MOVE.W   AkZugRing(\ComMsgPtr) , \Off
  51.    SUBQ.W   #BeginZugRing , \Off
  52.    MULU     #ZugRingSize , \Off
  53.    LEA      (\ZugRing,\Off.W) , \ZugRing
  54.    LEA      Spielfeld(\ComMsgPtr), \Spielfeld
  55.    MOVE.W   left(\ZugRing) , \left
  56.    SUBQ.W   #1 , \left
  57.    MOVE.W   top(\ZugRing) , \top
  58.    SUBQ.W   #1 , \top
  59.    MOVE.W   right(\ZugRing) , \right
  60.    SUBQ.W   #1 , \right
  61.    MOVE.W   down(\ZugRing) , \down
  62.    SUBQ.W   #1 , \down
  63.    CMP.B    #SenkrechtBit , RAngelegt(\ZugRing)
  64.    BNE      \Waagerecht
  65. \Senkrecht:
  66.    MOVE.W   \left , \Off2
  67.    MULU     #FeldAnz , \Off2
  68.    MOVE.W   \top , \Off
  69.    BLE.S    \S_IF_OR
  70.    ADD.W    \Off2 , \Off
  71.    TST.B    -1(\Spielfeld,\Off.W)
  72.    BNE.S    \S_WHILE_1_A
  73. \S_IF_OR:
  74.    CMP.W    #FeldAnz-1 , \down
  75.    BGE      \Ok
  76.    MOVE.W   \Off2 , \Off
  77.    ADD.W    \down , \Off
  78.    TST.B    1(\Spielfeld,\Off.W)
  79.    BEQ      \Ok
  80. \S_WHILE_1_A:
  81.    MOVE.W   \top , \Off
  82.    BLE.S    \S_WHILE_2_A
  83.    ADD.W    \Off2 , \Off
  84. \S_WHILE_1:
  85.    TST.B    -1(\Spielfeld,\Off.W)
  86.    BEQ.S    \S_WHILE_2_A
  87.    SUBQ.W   #1 , \top
  88.    BLE.S    \S_WHILE_2_A
  89.    SUBQ.W   #1 , \Off
  90.    BRA.S    \S_WHILE_1
  91. \S_WHILE_2_A:
  92.    CMP.W    #FeldAnz-1 , \down
  93.    BGE.S    \S_FOR_A
  94.    MOVE.W   \down , \Off
  95.    ADD.W    \Off2 , \Off
  96. \S_WHILE_2:
  97.    TST.B    1(\Spielfeld,\Off.W)
  98.    BEQ.S    \S_FOR_A
  99.    ADDQ.W   #1 , \down
  100.    CMP.W    #FeldAnz-1 , \down
  101.    BGE.S    \S_FOR_A
  102.    ADDQ.W   #1 , \Off
  103.    BRA.S    \S_WHILE_2
  104. \S_FOR_A:
  105.    LEA      GWort(\ComMsgPtr) , \GWort
  106.    MOVE.W   \top , \i
  107.    MOVE.W   \i , \Off
  108.    ADD.W    \Off2 , \Off
  109. \S_FOR:
  110.    TST.B    (\Spielfeld,\Off.W)
  111.    BNE.S    \S_IF_ELSE
  112.    MOVEM.L  \GWort/\i/\left/\top/\down/\ComMsgPtr/\ZugRing/\Off , -(SP)
  113.    MOVE.W   \left , D0
  114.    ADDQ.W   #1 , D0
  115.    MOVE.W   \i , D1
  116.    ADDQ.W   #1 , D1
  117.    MOVE.L   AdrSpielZugChar(\ComMsgPtr) , \Sprung
  118.    JSR      (\Sprung)
  119.    MOVEM.L  (SP)+ , \GWort/\i/\left/\top/\down/\ComMsgPtr/\ZugRing/\Off
  120.    LEA      Spielfeld(\ComMsgPtr), \Spielfeld
  121.    MOVE.B   D0 , (\GWort)+
  122.    BRA.S    \S_END_FOR
  123. \S_IF_ELSE:
  124.    MOVE.B   (\Spielfeld,\Off.W) , (\GWort)+
  125. \S_END_FOR:
  126.    ADDQ.W   #1 , \Off
  127.    ADDQ.W   #1 , \i
  128.    CMP.W    \i , \down
  129.    BGE.S    \S_FOR
  130.    CLR.B    (\GWort)
  131.    ADDQ.W   #1 , \top
  132.    MOVE.W   \top , top(\ZugRing)
  133.    ADDQ.W   #1 , \down
  134.    MOVE.W   \down , down(\ZugRing)
  135.    MOVE.L   AdrWortOk(\ComMsgPtr) , \Sprung
  136.    JMP      (\Sprung)
  137. \Waagerecht:
  138.    MOVE.W   \left , \Off
  139.    BLE.S    \W_IF_OR
  140.    MULU     #FeldAnz , \Off
  141.    ADD.W    \top , \Off
  142.    TST.B    -FeldAnz(\Spielfeld,\Off.W)
  143.    BNE.S    \W_WHILE_1_A
  144. \W_IF_OR:
  145.    CMP.W    #FeldAnz-1 , \right
  146.    BGE      \Ok
  147.    MOVE.W   \right , \Off
  148.    MULU     #FeldAnz , \Off
  149.    ADD.W    \top , \Off
  150.    TST.B    FeldAnz(\Spielfeld,\Off.W)
  151.    BEQ      \Ok
  152. \W_WHILE_1_A:
  153.    MOVE.W   \left , \Off
  154.    BLE.S    \W_WHILE_2_A
  155.    MULU     #FeldAnz , \Off
  156.    ADD.W    \top , \Off
  157. \W_WHILE_1:
  158.    TST.B    -FeldAnz(\Spielfeld,\Off.W)
  159.    BEQ.S    \W_WHILE_2_A
  160.    SUBQ.W   #1 , \left
  161.    BLE.S    \W_WHILE_2_A
  162.    SUB.W    #FeldAnz , \Off
  163.    BRA.S    \W_WHILE_1
  164. \W_WHILE_2_A:
  165.    CMP.W    #FeldAnz-1 , \right
  166.    BGE.S    \W_FOR_A
  167.    MOVE.W   \right , \Off
  168.    MULU     #FeldAnz , \Off
  169.    ADD.W    \top , \Off
  170. \W_WHILE_2:
  171.    TST.B    FeldAnz(\Spielfeld,\Off.W)
  172.    BEQ.S    \W_FOR_A
  173.    ADDQ.W   #1 , \right
  174.    CMP.W    #FeldAnz-1 , \right
  175.    BGE.S    \W_FOR_A
  176.    ADD.W    #FeldAnz , \Off
  177.    BRA.S    \W_WHILE_2
  178. \W_FOR_A:
  179.    LEA      GWort(\ComMsgPtr) , \GWort
  180.    MOVE.W   \left , \i
  181.    MOVE.W   \left , \Off
  182.    MULU     #FeldAnz , \Off
  183.    ADD.W    \top , \Off
  184. \W_FOR:
  185.    TST.B    (\Spielfeld,\Off.W)
  186.    BNE.S    \W_IF_ELSE
  187.    MOVEM.L  \GWort/\i/\left/\top/\right/\ComMsgPtr/\ZugRing/\Off , -(SP)
  188.    MOVE.W   \i , D0
  189.    ADDQ.W   #1 , D0
  190.    MOVE.W   \top , D1
  191.    ADDQ.W   #1 , D1
  192.    MOVE.L   AdrSpielZugChar(\ComMsgPtr) , \Sprung
  193.    JSR      (\Sprung)
  194.    MOVEM.L  (SP)+ , \GWort/\i/\left/\top/\right/\ComMsgPtr/\ZugRing/\Off
  195.    LEA      Spielfeld(\ComMsgPtr), \Spielfeld
  196.    MOVE.B   D0 , (\GWort)+
  197.    BRA.S    \W_END_FOR
  198. \W_IF_ELSE:
  199.    MOVE.B   (\Spielfeld,\Off.W) , (\GWort)+
  200. \W_END_FOR:
  201.    ADD.W    #FeldAnz , \Off
  202.    ADDQ.W   #1 , \i
  203.    CMP.W    \i , \right
  204.    BGE.S    \W_FOR
  205.    ADDQ.W   #1 , \left
  206.    MOVE.W   \left , left(\ZugRing)
  207.    ADDQ.W   #1 , \right
  208.    MOVE.W   \right , right(\ZugRing)
  209.    CLR.B    (\GWort)
  210.    MOVE.L   AdrWortOk(\ComMsgPtr) , \Sprung
  211.    JMP      (\Sprung)
  212. \Ok:
  213.    MOVEQ    #-1 , \Bool
  214.    RTS
  215.  
  216.    END
  217.  
  218.